# -*- coding: utf-8 -*-

from django.http import HttpResponse
from djtools.utils import rtr, httprr
from rh.models import Servidor, Dependente, AtestadoSaude
from rh.forms import DependenteForm, EtiquetasServidoresForm, AtestadoSaudeForm

from rh.reports import Etiqueta
from geraldo.generators import PDFGenerator
from rh.relatorio import RelatorioAtestadoPeriodoForm,\
    RelatorioGuiaAtendimentoForm


@rtr('rh/templates/form_listar_dependente.html')
def listar_dependente(request, servidor_id):
    servidor = Servidor.objects.get(id=servidor_id)
    return locals()

@rtr('rh/templates/form_editar_dependente.html')
def adicionar_dependente(request, servidor_id):
    servidor = Servidor.objects.get(id=servidor_id)
    if request.POST:
        form = DependenteForm(request.POST, servidor_id=servidor_id)
        if form.is_valid():
            form.save()
            urls = '/rh/listar_dependente/%s' % servidor.id
            return httprr(urls, 'Dependente cadastrado com sucesso.')
    else:
        form = DependenteForm(servidor_id=servidor_id)
    form.TITLE = 'Adicionar Dependente'
    return locals()

@rtr('rh/templates/form_editar_dependente.html')
def editar_dependente(request, dependente_id):
    dependente = Dependente.objects.get(id=dependente_id)
    servidor = dependente.servidor
    if request.POST:
        form = DependenteForm(request.POST, servidor_id=servidor.id, instance=dependente)
        if form.is_valid():
            form.save()
            urls = '/rh/listar_dependente/%s' % servidor.id
            return httprr(urls, 'Dependente cadastrado com sucesso.')
    else:
        form = DependenteForm(servidor_id=servidor.id, instance=dependente)
    form.TITLE = 'Modificar Dependente'
    return locals()

# ATESTADOS #

@rtr('rh/templates/form_listar_atestado.html')
def listar_atestado(request, servidor_id):
    servidor = Servidor.objects.get(id=servidor_id)
    return locals()

@rtr('rh/templates/form_editar_atestado.html')
def adicionar_atestado(request, servidor_id):
    servidor = Servidor.objects.get(id=servidor_id)
    if request.POST:
        form = AtestadoSaudeForm(request.POST, servidor_id=servidor_id)
        if form.is_valid():
            form.save()
            urls = '/rh/listar_atestado/%s' % servidor.id
            return httprr(urls, 'Atestado cadastrado com sucesso.')
    else:
        form = AtestadoSaudeForm(servidor_id=servidor_id)
    form.TITLE = 'Adicionar Atestado de Saúde'
    return locals()

@rtr('rh/templates/form_editar_atestado.html')
def editar_atestado(request, atestado_id):
    atestado = AtestadoSaude.objects.get(id=atestado_id)
    servidor = atestado.servidor
    if request.POST:
        form = AtestadoSaudeForm(request.POST, servidor_id=servidor.id, instance=atestado)
        if form.is_valid():
            form.save()
            urls = '/rh/listar_atestado/%s' % servidor.id
            return httprr(urls, 'Atestado cadastrado com sucesso.')
    else:
        form = AtestadoSaudeForm(servidor_id=servidor.id, instance=atestado)
    form.TITLE = 'Modificar Atestado de Saúde'
    return locals()

# ETIQUETAS #

def etiqueta_servidor(request, obj_pk):
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=etiqueta.pdf'

    servidor = Servidor.objects.filter(pk = obj_pk)
    
    report = Etiqueta(queryset=servidor)
    report.generate_by(PDFGenerator, filename=response)

    return response

@rtr()
def etiquetas_servidores(request):
    form = EtiquetasServidoresForm(request.GET or None)
    if form.is_valid():
        ordem = form.cleaned_data['ordem']
    
        response = HttpResponse(mimetype='application/pdf')
        response['Content-Disposition'] = 'attachment; filename=etiquetas.pdf'
    
        servidores = Servidor.objects.order_by(ordem)
            
        report = Etiqueta(queryset=servidores)
        report.generate_by(PDFGenerator, filename=response)
        return response
    
    return locals()

def etiquetas_dependentes(request, obj_pk):
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=etiquetas.pdf'
    
    servidor = Servidor.objects.get(pk=obj_pk)
    dependentes = servidor.dependente_set.all()
    
    report = Etiqueta(queryset=dependentes)
    report.generate_by(PDFGenerator, filename=response)

    return response

@rtr()
def relatorio_atestado_periodo(request):
    form = RelatorioAtestadoPeriodoForm(request.GET or None)
    if form.is_valid():
        
        data_inicial = form.cleaned_data['data_inicial']
        data_final = form.cleaned_data['data_final']
        
        atestados = AtestadoSaude.objects.order_by('data_validade')
        
        if data_inicial:
            atestados = atestados.filter(data_validade__gte=data_inicial)
        if data_final:
            atestados = atestados.filter(data_validade__lte=data_final)
            
    return locals()

@rtr()
def relatorio_guia_atendimento(request, obj_pk):
    form = RelatorioGuiaAtendimentoForm(request.GET or None)
    servidor = AtestadoSaude.objects.get(pk=obj_pk).servidor

    if form.is_valid():
        
        data_inicial = form.cleaned_data['data_inicial']
        prestador = form.cleaned_data['prestador']
        endereco = form.cleaned_data['endereco']
        telefone = form.cleaned_data['telefone']
        servicos = form.cleaned_data['servicos']
        outros = form.cleaned_data['outros']
    
        response = HttpResponse(mimetype='application/pdf')
        response['Content-Disposition'] = 'attachment; filename=etiquetas.pdf'
#FIXME: Fazer o Report do GuiaAtendimento
        report = Etiqueta(queryset=servidor)
        report.generate_by(PDFGenerator, filename=response)
        return response
    
    return locals()